package io.filepicker.utils;
import android.content.Context;
import com.squareup.okhttp.Interceptor;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.Response;
import com.squareup.picasso.OkHttpDownloader;
import com.squareup.picasso.Picasso;
import java.io.IOException;
/**
* Created by maciejwitowski on 10/29/14.
*/
public class ImageLoader {
private static Picasso imageLoader;
public static Picasso getImageLoader(Context context) {
if (imageLoader == null) {
imageLoader = buildImageLoader(context);
}
return imageLoader;
}
public static void setImageLoader(Context context) {
imageLoader = buildImageLoader(context);
}
// Return Picasso object with the session set, so Picasso can fetch thumbnails from Filepicker Api
private static Picasso buildImageLoader(final Context context) {
Picasso.Builder builder = new Picasso.Builder(context);
OkHttpClient fpHttpClient = new OkHttpClient();
fpHttpClient.networkInterceptors().add(new FpSessionedInterceptor(context));
builder.downloader(new OkHttpDownloader(fpHttpClient));
return builder.build();
}
// Interceptor which has filepicker cookie session set
private static class FpSessionedInterceptor implements Interceptor {
final Context mContext;
FpSessionedInterceptor(Context context) {
mContext = context;
}
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
Request sessionedRequest = request.newBuilder()
.header("Cookie", "session=" + PreferencesUtils.newInstance(mContext).getSessionCookie())
.build();
return chain.proceed(sessionedRequest);
}
}
}